↳ ITRS
↳ ITRStoIDPProof
z
sieve(nil) → nil
Cond_isdiv(TRUE, x, y) → isdiv(x, -@z(y, x))
Cond_isdiv1(TRUE, x) → TRUE
filter(x, cons(y, zs)) → if(isdiv(x, y), x, y, zs)
if(TRUE, x, y, zs) → filter(x, zs)
Cond_nats1(TRUE, x, y) → nil
nats(x, y) → Cond_nats1(>@z(x, y), x, y)
isdiv(x, 0@z) → Cond_isdiv1(>@z(x, 0@z), x)
nats(x, y) → Cond_nats(>=@z(y, x), x, y)
isdiv(x, y) → Cond_isdiv2(&&(>@z(x, y), >@z(y, 0@z)), x, y)
if(FALSE, x, y, zs) → cons(y, filter(x, zs))
Cond_nats(TRUE, x, y) → cons(x, nats(+@z(x, 1@z), y))
isdiv(x, y) → Cond_isdiv(&&(>=@z(y, x), >@z(x, 0@z)), x, y)
filter(x, nil) → nil
sieve(cons(x, ys)) → cons(x, sieve(filter(x, ys)))
Cond_isdiv2(TRUE, x, y) → FALSE
primes(x) → sieve(nats(2@z, x))
sieve(nil)
Cond_isdiv(TRUE, x0, x1)
Cond_isdiv1(TRUE, x0)
filter(x0, cons(x1, x2))
if(TRUE, x0, x1, x2)
Cond_nats1(TRUE, x0, x1)
nats(x0, x1)
isdiv(x0, x1)
if(FALSE, x0, x1, x2)
Cond_nats(TRUE, x0, x1)
filter(x0, nil)
sieve(cons(x0, x1))
Cond_isdiv2(TRUE, x0, x1)
primes(x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
z
sieve(nil) → nil
Cond_isdiv(TRUE, x, y) → isdiv(x, -@z(y, x))
Cond_isdiv1(TRUE, x) → TRUE
filter(x, cons(y, zs)) → if(isdiv(x, y), x, y, zs)
if(TRUE, x, y, zs) → filter(x, zs)
Cond_nats1(TRUE, x, y) → nil
nats(x, y) → Cond_nats1(>@z(x, y), x, y)
isdiv(x, 0@z) → Cond_isdiv1(>@z(x, 0@z), x)
nats(x, y) → Cond_nats(>=@z(y, x), x, y)
isdiv(x, y) → Cond_isdiv2(&&(>@z(x, y), >@z(y, 0@z)), x, y)
if(FALSE, x, y, zs) → cons(y, filter(x, zs))
Cond_nats(TRUE, x, y) → cons(x, nats(+@z(x, 1@z), y))
isdiv(x, y) → Cond_isdiv(&&(>=@z(y, x), >@z(x, 0@z)), x, y)
filter(x, nil) → nil
sieve(cons(x, ys)) → cons(x, sieve(filter(x, ys)))
Cond_isdiv2(TRUE, x, y) → FALSE
primes(x) → sieve(nats(2@z, x))
(0) -> (1), if ((y[0] →* y[1])∧(+@z(x[0], 1@z) →* x[1]))
(0) -> (13), if ((y[0] →* y[13])∧(+@z(x[0], 1@z) →* x[13]))
(1) -> (0), if ((x[1] →* x[0])∧(y[1] →* y[0])∧(>=@z(y[1], x[1]) →* TRUE))
(2) -> (10), if ((ys[2] →* cons(y[10], zs[10]))∧(x[2] →* x[10]))
(2) -> (12), if ((ys[2] →* cons(y[12], zs[12]))∧(x[2] →* x[12]))
(3) -> (1), if ((x[3] →* y[1]))
(3) -> (13), if ((x[3] →* y[13]))
(4) -> (14), if ((x[4] →* x[14])∧(y[4] →* y[14])∧(&&(>=@z(y[4], x[4]), >@z(x[4], 0@z)) →* TRUE))
(5) -> (10), if ((zs[5] →* cons(y[10], zs[10]))∧(x[5] →* x[10]))
(5) -> (12), if ((zs[5] →* cons(y[12], zs[12]))∧(x[5] →* x[12]))
(7) -> (10), if ((zs[7] →* cons(y[10], zs[10]))∧(x[7] →* x[10]))
(7) -> (12), if ((zs[7] →* cons(y[12], zs[12]))∧(x[7] →* x[12]))
(9) -> (2), if ((nats(2@z, x[9]) →* cons(x[2], ys[2])))
(9) -> (11), if ((nats(2@z, x[9]) →* cons(x[11], ys[11])))
(10) -> (4), if ((y[10] →* y[4])∧(x[10] →* x[4]))
(10) -> (6), if ((y[10] →* 0@z)∧(x[10] →* x[6]))
(10) -> (8), if ((y[10] →* y[8])∧(x[10] →* x[8]))
(11) -> (2), if ((filter(x[11], ys[11]) →* cons(x[2], ys[2])))
(11) -> (11), if ((filter(x[11], ys[11]) →* cons(x[11]a, ys[11]a)))
(12) -> (5), if ((zs[12] →* zs[5])∧(x[12] →* x[5])∧(y[12] →* y[5])∧(isdiv(x[12], y[12]) →* FALSE))
(12) -> (7), if ((zs[12] →* zs[7])∧(x[12] →* x[7])∧(y[12] →* y[7])∧(isdiv(x[12], y[12]) →* TRUE))
(14) -> (4), if ((-@z(y[14], x[14]) →* y[4])∧(x[14] →* x[4]))
(14) -> (6), if ((-@z(y[14], x[14]) →* 0@z)∧(x[14] →* x[6]))
(14) -> (8), if ((-@z(y[14], x[14]) →* y[8])∧(x[14] →* x[8]))
sieve(nil)
Cond_isdiv(TRUE, x0, x1)
Cond_isdiv1(TRUE, x0)
filter(x0, cons(x1, x2))
if(TRUE, x0, x1, x2)
Cond_nats1(TRUE, x0, x1)
nats(x0, x1)
isdiv(x0, x1)
if(FALSE, x0, x1, x2)
Cond_nats(TRUE, x0, x1)
filter(x0, nil)
sieve(cons(x0, x1))
Cond_isdiv2(TRUE, x0, x1)
primes(x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
z
Cond_isdiv1(TRUE, x) → TRUE
filter(x, cons(y, zs)) → if(isdiv(x, y), x, y, zs)
if(TRUE, x, y, zs) → filter(x, zs)
Cond_nats1(TRUE, x, y) → nil
nats(x, y) → Cond_nats1(>@z(x, y), x, y)
isdiv(x, 0@z) → Cond_isdiv1(>@z(x, 0@z), x)
nats(x, y) → Cond_nats(>=@z(y, x), x, y)
isdiv(x, y) → Cond_isdiv2(&&(>@z(x, y), >@z(y, 0@z)), x, y)
if(FALSE, x, y, zs) → cons(y, filter(x, zs))
Cond_nats(TRUE, x, y) → cons(x, nats(+@z(x, 1@z), y))
Cond_isdiv(TRUE, x, y) → isdiv(x, -@z(y, x))
isdiv(x, y) → Cond_isdiv(&&(>=@z(y, x), >@z(x, 0@z)), x, y)
filter(x, nil) → nil
Cond_isdiv2(TRUE, x, y) → FALSE
(0) -> (1), if ((y[0] →* y[1])∧(+@z(x[0], 1@z) →* x[1]))
(0) -> (13), if ((y[0] →* y[13])∧(+@z(x[0], 1@z) →* x[13]))
(1) -> (0), if ((x[1] →* x[0])∧(y[1] →* y[0])∧(>=@z(y[1], x[1]) →* TRUE))
(2) -> (10), if ((ys[2] →* cons(y[10], zs[10]))∧(x[2] →* x[10]))
(2) -> (12), if ((ys[2] →* cons(y[12], zs[12]))∧(x[2] →* x[12]))
(3) -> (1), if ((x[3] →* y[1]))
(3) -> (13), if ((x[3] →* y[13]))
(4) -> (14), if ((x[4] →* x[14])∧(y[4] →* y[14])∧(&&(>=@z(y[4], x[4]), >@z(x[4], 0@z)) →* TRUE))
(5) -> (10), if ((zs[5] →* cons(y[10], zs[10]))∧(x[5] →* x[10]))
(5) -> (12), if ((zs[5] →* cons(y[12], zs[12]))∧(x[5] →* x[12]))
(7) -> (10), if ((zs[7] →* cons(y[10], zs[10]))∧(x[7] →* x[10]))
(7) -> (12), if ((zs[7] →* cons(y[12], zs[12]))∧(x[7] →* x[12]))
(9) -> (2), if ((nats(2@z, x[9]) →* cons(x[2], ys[2])))
(9) -> (11), if ((nats(2@z, x[9]) →* cons(x[11], ys[11])))
(10) -> (4), if ((y[10] →* y[4])∧(x[10] →* x[4]))
(10) -> (6), if ((y[10] →* 0@z)∧(x[10] →* x[6]))
(10) -> (8), if ((y[10] →* y[8])∧(x[10] →* x[8]))
(11) -> (2), if ((filter(x[11], ys[11]) →* cons(x[2], ys[2])))
(11) -> (11), if ((filter(x[11], ys[11]) →* cons(x[11]a, ys[11]a)))
(12) -> (5), if ((zs[12] →* zs[5])∧(x[12] →* x[5])∧(y[12] →* y[5])∧(isdiv(x[12], y[12]) →* FALSE))
(12) -> (7), if ((zs[12] →* zs[7])∧(x[12] →* x[7])∧(y[12] →* y[7])∧(isdiv(x[12], y[12]) →* TRUE))
(14) -> (4), if ((-@z(y[14], x[14]) →* y[4])∧(x[14] →* x[4]))
(14) -> (6), if ((-@z(y[14], x[14]) →* 0@z)∧(x[14] →* x[6]))
(14) -> (8), if ((-@z(y[14], x[14]) →* y[8])∧(x[14] →* x[8]))
sieve(nil)
Cond_isdiv(TRUE, x0, x1)
Cond_isdiv1(TRUE, x0)
filter(x0, cons(x1, x2))
if(TRUE, x0, x1, x2)
Cond_nats1(TRUE, x0, x1)
nats(x0, x1)
isdiv(x0, x1)
if(FALSE, x0, x1, x2)
Cond_nats(TRUE, x0, x1)
filter(x0, nil)
sieve(cons(x0, x1))
Cond_isdiv2(TRUE, x0, x1)
primes(x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDP
↳ IDP
z
Cond_isdiv1(TRUE, x) → TRUE
filter(x, cons(y, zs)) → if(isdiv(x, y), x, y, zs)
if(TRUE, x, y, zs) → filter(x, zs)
Cond_nats1(TRUE, x, y) → nil
nats(x, y) → Cond_nats1(>@z(x, y), x, y)
isdiv(x, 0@z) → Cond_isdiv1(>@z(x, 0@z), x)
nats(x, y) → Cond_nats(>=@z(y, x), x, y)
isdiv(x, y) → Cond_isdiv2(&&(>@z(x, y), >@z(y, 0@z)), x, y)
if(FALSE, x, y, zs) → cons(y, filter(x, zs))
Cond_nats(TRUE, x, y) → cons(x, nats(+@z(x, 1@z), y))
Cond_isdiv(TRUE, x, y) → isdiv(x, -@z(y, x))
isdiv(x, y) → Cond_isdiv(&&(>=@z(y, x), >@z(x, 0@z)), x, y)
filter(x, nil) → nil
Cond_isdiv2(TRUE, x, y) → FALSE
(0) -> (1), if ((y[0] →* y[1])∧(+@z(x[0], 1@z) →* x[1]))
(1) -> (0), if ((x[1] →* x[0])∧(y[1] →* y[0])∧(>=@z(y[1], x[1]) →* TRUE))
sieve(nil)
Cond_isdiv(TRUE, x0, x1)
Cond_isdiv1(TRUE, x0)
filter(x0, cons(x1, x2))
if(TRUE, x0, x1, x2)
Cond_nats1(TRUE, x0, x1)
nats(x0, x1)
isdiv(x0, x1)
if(FALSE, x0, x1, x2)
Cond_nats(TRUE, x0, x1)
filter(x0, nil)
sieve(cons(x0, x1))
Cond_isdiv2(TRUE, x0, x1)
primes(x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ IDP
↳ IDP
↳ IDP
z
(0) -> (1), if ((y[0] →* y[1])∧(+@z(x[0], 1@z) →* x[1]))
(1) -> (0), if ((x[1] →* x[0])∧(y[1] →* y[0])∧(>=@z(y[1], x[1]) →* TRUE))
sieve(nil)
Cond_isdiv(TRUE, x0, x1)
Cond_isdiv1(TRUE, x0)
filter(x0, cons(x1, x2))
if(TRUE, x0, x1, x2)
Cond_nats1(TRUE, x0, x1)
nats(x0, x1)
isdiv(x0, x1)
if(FALSE, x0, x1, x2)
Cond_nats(TRUE, x0, x1)
filter(x0, nil)
sieve(cons(x0, x1))
Cond_isdiv2(TRUE, x0, x1)
primes(x0)
(1) (NATS(x[1], y[1])≥NonInfC∧NATS(x[1], y[1])≥COND_NATS(>=@z(y[1], x[1]), x[1], y[1])∧(UIncreasing(COND_NATS(>=@z(y[1], x[1]), x[1], y[1])), ≥))
(2) ((UIncreasing(COND_NATS(>=@z(y[1], x[1]), x[1], y[1])), ≥)∧0 ≥ 0∧0 ≥ 0)
(3) ((UIncreasing(COND_NATS(>=@z(y[1], x[1]), x[1], y[1])), ≥)∧0 ≥ 0∧0 ≥ 0)
(4) (0 ≥ 0∧0 ≥ 0∧(UIncreasing(COND_NATS(>=@z(y[1], x[1]), x[1], y[1])), ≥))
(5) (0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 ≥ 0∧(UIncreasing(COND_NATS(>=@z(y[1], x[1]), x[1], y[1])), ≥)∧0 = 0)
(6) (y[0]=y[1]1∧+@z(x[0], 1@z)=x[1]1∧y[1]=y[0]∧>=@z(y[1], x[1])=TRUE∧x[1]=x[0] ⇒ COND_NATS(TRUE, x[0], y[0])≥NonInfC∧COND_NATS(TRUE, x[0], y[0])≥NATS(+@z(x[0], 1@z), y[0])∧(UIncreasing(NATS(+@z(x[0], 1@z), y[0])), ≥))
(7) (>=@z(y[1], x[1])=TRUE ⇒ COND_NATS(TRUE, x[1], y[1])≥NonInfC∧COND_NATS(TRUE, x[1], y[1])≥NATS(+@z(x[1], 1@z), y[1])∧(UIncreasing(NATS(+@z(x[0], 1@z), y[0])), ≥))
(8) (y[1] + (-1)x[1] ≥ 0 ⇒ (UIncreasing(NATS(+@z(x[0], 1@z), y[0])), ≥)∧-1 + (-1)Bound + y[1] + (-1)x[1] ≥ 0∧0 ≥ 0)
(9) (y[1] + (-1)x[1] ≥ 0 ⇒ (UIncreasing(NATS(+@z(x[0], 1@z), y[0])), ≥)∧-1 + (-1)Bound + y[1] + (-1)x[1] ≥ 0∧0 ≥ 0)
(10) (y[1] + (-1)x[1] ≥ 0 ⇒ -1 + (-1)Bound + y[1] + (-1)x[1] ≥ 0∧0 ≥ 0∧(UIncreasing(NATS(+@z(x[0], 1@z), y[0])), ≥))
(11) (x[1] ≥ 0 ⇒ -1 + (-1)Bound + x[1] ≥ 0∧0 ≥ 0∧(UIncreasing(NATS(+@z(x[0], 1@z), y[0])), ≥))
(12) (x[1] ≥ 0∧y[1] ≥ 0 ⇒ -1 + (-1)Bound + x[1] ≥ 0∧0 ≥ 0∧(UIncreasing(NATS(+@z(x[0], 1@z), y[0])), ≥))
(13) (x[1] ≥ 0∧y[1] ≥ 0 ⇒ -1 + (-1)Bound + x[1] ≥ 0∧0 ≥ 0∧(UIncreasing(NATS(+@z(x[0], 1@z), y[0])), ≥))
POL(>=@z(x1, x2)) = -1
POL(TRUE) = -1
POL(COND_NATS(x1, x2, x3)) = -1 + x3 + (-1)x2
POL(+@z(x1, x2)) = x1 + x2
POL(NATS(x1, x2)) = -1 + x2 + (-1)x1
POL(FALSE) = -1
POL(1@z) = 1
POL(undefined) = -1
COND_NATS(TRUE, x[0], y[0]) → NATS(+@z(x[0], 1@z), y[0])
COND_NATS(TRUE, x[0], y[0]) → NATS(+@z(x[0], 1@z), y[0])
NATS(x[1], y[1]) → COND_NATS(>=@z(y[1], x[1]), x[1], y[1])
+@z1 ↔
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ IDP
↳ IDependencyGraphProof
↳ IDP
↳ IDP
↳ IDP
z
sieve(nil)
Cond_isdiv(TRUE, x0, x1)
Cond_isdiv1(TRUE, x0)
filter(x0, cons(x1, x2))
if(TRUE, x0, x1, x2)
Cond_nats1(TRUE, x0, x1)
nats(x0, x1)
isdiv(x0, x1)
if(FALSE, x0, x1, x2)
Cond_nats(TRUE, x0, x1)
filter(x0, nil)
sieve(cons(x0, x1))
Cond_isdiv2(TRUE, x0, x1)
primes(x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDP
z
Cond_isdiv1(TRUE, x) → TRUE
filter(x, cons(y, zs)) → if(isdiv(x, y), x, y, zs)
if(TRUE, x, y, zs) → filter(x, zs)
Cond_nats1(TRUE, x, y) → nil
nats(x, y) → Cond_nats1(>@z(x, y), x, y)
isdiv(x, 0@z) → Cond_isdiv1(>@z(x, 0@z), x)
nats(x, y) → Cond_nats(>=@z(y, x), x, y)
isdiv(x, y) → Cond_isdiv2(&&(>@z(x, y), >@z(y, 0@z)), x, y)
if(FALSE, x, y, zs) → cons(y, filter(x, zs))
Cond_nats(TRUE, x, y) → cons(x, nats(+@z(x, 1@z), y))
Cond_isdiv(TRUE, x, y) → isdiv(x, -@z(y, x))
isdiv(x, y) → Cond_isdiv(&&(>=@z(y, x), >@z(x, 0@z)), x, y)
filter(x, nil) → nil
Cond_isdiv2(TRUE, x, y) → FALSE
(4) -> (14), if ((x[4] →* x[14])∧(y[4] →* y[14])∧(&&(>=@z(y[4], x[4]), >@z(x[4], 0@z)) →* TRUE))
(14) -> (4), if ((-@z(y[14], x[14]) →* y[4])∧(x[14] →* x[4]))
sieve(nil)
Cond_isdiv(TRUE, x0, x1)
Cond_isdiv1(TRUE, x0)
filter(x0, cons(x1, x2))
if(TRUE, x0, x1, x2)
Cond_nats1(TRUE, x0, x1)
nats(x0, x1)
isdiv(x0, x1)
if(FALSE, x0, x1, x2)
Cond_nats(TRUE, x0, x1)
filter(x0, nil)
sieve(cons(x0, x1))
Cond_isdiv2(TRUE, x0, x1)
primes(x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ IDP
↳ IDP
z
(4) -> (14), if ((x[4] →* x[14])∧(y[4] →* y[14])∧(&&(>=@z(y[4], x[4]), >@z(x[4], 0@z)) →* TRUE))
(14) -> (4), if ((-@z(y[14], x[14]) →* y[4])∧(x[14] →* x[4]))
sieve(nil)
Cond_isdiv(TRUE, x0, x1)
Cond_isdiv1(TRUE, x0)
filter(x0, cons(x1, x2))
if(TRUE, x0, x1, x2)
Cond_nats1(TRUE, x0, x1)
nats(x0, x1)
isdiv(x0, x1)
if(FALSE, x0, x1, x2)
Cond_nats(TRUE, x0, x1)
filter(x0, nil)
sieve(cons(x0, x1))
Cond_isdiv2(TRUE, x0, x1)
primes(x0)
(1) (x[4]=x[14]∧-@z(y[14], x[14])=y[4]1∧x[14]=x[4]1∧&&(>=@z(y[4], x[4]), >@z(x[4], 0@z))=TRUE∧y[4]=y[14] ⇒ COND_ISDIV(TRUE, x[14], y[14])≥NonInfC∧COND_ISDIV(TRUE, x[14], y[14])≥ISDIV(x[14], -@z(y[14], x[14]))∧(UIncreasing(ISDIV(x[14], -@z(y[14], x[14]))), ≥))
(2) (>=@z(y[4], x[4])=TRUE∧>@z(x[4], 0@z)=TRUE ⇒ COND_ISDIV(TRUE, x[4], y[4])≥NonInfC∧COND_ISDIV(TRUE, x[4], y[4])≥ISDIV(x[4], -@z(y[4], x[4]))∧(UIncreasing(ISDIV(x[14], -@z(y[14], x[14]))), ≥))
(3) (y[4] + (-1)x[4] ≥ 0∧-1 + x[4] ≥ 0 ⇒ (UIncreasing(ISDIV(x[14], -@z(y[14], x[14]))), ≥)∧-1 + (-1)Bound + y[4] + (-1)x[4] ≥ 0∧-1 + x[4] ≥ 0)
(4) (y[4] + (-1)x[4] ≥ 0∧-1 + x[4] ≥ 0 ⇒ (UIncreasing(ISDIV(x[14], -@z(y[14], x[14]))), ≥)∧-1 + (-1)Bound + y[4] + (-1)x[4] ≥ 0∧-1 + x[4] ≥ 0)
(5) (-1 + x[4] ≥ 0∧y[4] + (-1)x[4] ≥ 0 ⇒ -1 + x[4] ≥ 0∧-1 + (-1)Bound + y[4] + (-1)x[4] ≥ 0∧(UIncreasing(ISDIV(x[14], -@z(y[14], x[14]))), ≥))
(6) (x[4] ≥ 0∧-1 + y[4] + (-1)x[4] ≥ 0 ⇒ x[4] ≥ 0∧-2 + (-1)Bound + y[4] + (-1)x[4] ≥ 0∧(UIncreasing(ISDIV(x[14], -@z(y[14], x[14]))), ≥))
(7) (x[4] ≥ 0∧y[4] ≥ 0 ⇒ x[4] ≥ 0∧-1 + (-1)Bound + y[4] ≥ 0∧(UIncreasing(ISDIV(x[14], -@z(y[14], x[14]))), ≥))
(8) (ISDIV(x[4], y[4])≥NonInfC∧ISDIV(x[4], y[4])≥COND_ISDIV(&&(>=@z(y[4], x[4]), >@z(x[4], 0@z)), x[4], y[4])∧(UIncreasing(COND_ISDIV(&&(>=@z(y[4], x[4]), >@z(x[4], 0@z)), x[4], y[4])), ≥))
(9) ((UIncreasing(COND_ISDIV(&&(>=@z(y[4], x[4]), >@z(x[4], 0@z)), x[4], y[4])), ≥)∧0 ≥ 0∧0 ≥ 0)
(10) ((UIncreasing(COND_ISDIV(&&(>=@z(y[4], x[4]), >@z(x[4], 0@z)), x[4], y[4])), ≥)∧0 ≥ 0∧0 ≥ 0)
(11) (0 ≥ 0∧0 ≥ 0∧(UIncreasing(COND_ISDIV(&&(>=@z(y[4], x[4]), >@z(x[4], 0@z)), x[4], y[4])), ≥))
(12) (0 = 0∧0 ≥ 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧(UIncreasing(COND_ISDIV(&&(>=@z(y[4], x[4]), >@z(x[4], 0@z)), x[4], y[4])), ≥))
POL(-@z(x1, x2)) = x1 + (-1)x2
POL(>=@z(x1, x2)) = -1
POL(0@z) = 0
POL(ISDIV(x1, x2)) = -1 + x2 + (-1)x1
POL(TRUE) = 0
POL(&&(x1, x2)) = 0
POL(FALSE) = 0
POL(COND_ISDIV(x1, x2, x3)) = -1 + x3 + (-1)x2 + (-1)x1
POL(undefined) = -1
POL(>@z(x1, x2)) = -1
COND_ISDIV(TRUE, x[14], y[14]) → ISDIV(x[14], -@z(y[14], x[14]))
COND_ISDIV(TRUE, x[14], y[14]) → ISDIV(x[14], -@z(y[14], x[14]))
ISDIV(x[4], y[4]) → COND_ISDIV(&&(>=@z(y[4], x[4]), >@z(x[4], 0@z)), x[4], y[4])
&&(FALSE, FALSE)1 ↔ FALSE1
-@z1 ↔
&&(TRUE, TRUE)1 ↔ TRUE1
&&(FALSE, TRUE)1 ↔ FALSE1
&&(TRUE, FALSE)1 ↔ FALSE1
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ IDP
↳ IDependencyGraphProof
↳ IDP
↳ IDP
z
sieve(nil)
Cond_isdiv(TRUE, x0, x1)
Cond_isdiv1(TRUE, x0)
filter(x0, cons(x1, x2))
if(TRUE, x0, x1, x2)
Cond_nats1(TRUE, x0, x1)
nats(x0, x1)
isdiv(x0, x1)
if(FALSE, x0, x1, x2)
Cond_nats(TRUE, x0, x1)
filter(x0, nil)
sieve(cons(x0, x1))
Cond_isdiv2(TRUE, x0, x1)
primes(x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
z
Cond_isdiv1(TRUE, x) → TRUE
filter(x, cons(y, zs)) → if(isdiv(x, y), x, y, zs)
if(TRUE, x, y, zs) → filter(x, zs)
Cond_nats1(TRUE, x, y) → nil
nats(x, y) → Cond_nats1(>@z(x, y), x, y)
isdiv(x, 0@z) → Cond_isdiv1(>@z(x, 0@z), x)
nats(x, y) → Cond_nats(>=@z(y, x), x, y)
isdiv(x, y) → Cond_isdiv2(&&(>@z(x, y), >@z(y, 0@z)), x, y)
if(FALSE, x, y, zs) → cons(y, filter(x, zs))
Cond_nats(TRUE, x, y) → cons(x, nats(+@z(x, 1@z), y))
Cond_isdiv(TRUE, x, y) → isdiv(x, -@z(y, x))
isdiv(x, y) → Cond_isdiv(&&(>=@z(y, x), >@z(x, 0@z)), x, y)
filter(x, nil) → nil
Cond_isdiv2(TRUE, x, y) → FALSE
(7) -> (12), if ((zs[7] →* cons(y[12], zs[12]))∧(x[7] →* x[12]))
(12) -> (5), if ((zs[12] →* zs[5])∧(x[12] →* x[5])∧(y[12] →* y[5])∧(isdiv(x[12], y[12]) →* FALSE))
(5) -> (12), if ((zs[5] →* cons(y[12], zs[12]))∧(x[5] →* x[12]))
(12) -> (7), if ((zs[12] →* zs[7])∧(x[12] →* x[7])∧(y[12] →* y[7])∧(isdiv(x[12], y[12]) →* TRUE))
sieve(nil)
Cond_isdiv(TRUE, x0, x1)
Cond_isdiv1(TRUE, x0)
filter(x0, cons(x1, x2))
if(TRUE, x0, x1, x2)
Cond_nats1(TRUE, x0, x1)
nats(x0, x1)
isdiv(x0, x1)
if(FALSE, x0, x1, x2)
Cond_nats(TRUE, x0, x1)
filter(x0, nil)
sieve(cons(x0, x1))
Cond_isdiv2(TRUE, x0, x1)
primes(x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ IDP
z
Cond_isdiv2(TRUE, x, y) → FALSE
Cond_isdiv(TRUE, x, y) → isdiv(x, -@z(y, x))
isdiv(x, y) → Cond_isdiv(&&(>=@z(y, x), >@z(x, 0@z)), x, y)
isdiv(x, y) → Cond_isdiv2(&&(>@z(x, y), >@z(y, 0@z)), x, y)
isdiv(x, 0@z) → Cond_isdiv1(>@z(x, 0@z), x)
Cond_isdiv1(TRUE, x) → TRUE
(7) -> (12), if ((zs[7] →* cons(y[12], zs[12]))∧(x[7] →* x[12]))
(12) -> (5), if ((zs[12] →* zs[5])∧(x[12] →* x[5])∧(y[12] →* y[5])∧(isdiv(x[12], y[12]) →* FALSE))
(5) -> (12), if ((zs[5] →* cons(y[12], zs[12]))∧(x[5] →* x[12]))
(12) -> (7), if ((zs[12] →* zs[7])∧(x[12] →* x[7])∧(y[12] →* y[7])∧(isdiv(x[12], y[12]) →* TRUE))
sieve(nil)
Cond_isdiv(TRUE, x0, x1)
Cond_isdiv1(TRUE, x0)
filter(x0, cons(x1, x2))
if(TRUE, x0, x1, x2)
Cond_nats1(TRUE, x0, x1)
nats(x0, x1)
isdiv(x0, x1)
if(FALSE, x0, x1, x2)
Cond_nats(TRUE, x0, x1)
filter(x0, nil)
sieve(cons(x0, x1))
Cond_isdiv2(TRUE, x0, x1)
primes(x0)
(1) (isdiv(x[12], y[12])=TRUE∧zs[7]=cons(y[12]1, zs[12]1)∧zs[12]=zs[7]∧x[7]=x[12]1∧x[12]=x[7]∧y[12]=y[7] ⇒ IF(TRUE, x[7], y[7], zs[7])≥FILTER(x[7], zs[7])∧(UIncreasing(FILTER(x[7], zs[7])), ≥))
(2) (isdiv(x[12], y[12])=TRUE ⇒ IF(TRUE, x[12], y[12], cons(y[12]1, zs[12]1))≥FILTER(x[12], cons(y[12]1, zs[12]1))∧(UIncreasing(FILTER(x[7], zs[7])), ≥))
(3) (Cond_isdiv(&&(>=@z(x0, x1), >@z(x1, 0@z)), x1, x0)=TRUE ⇒ IF(TRUE, x1, x0, cons(y[12]1, zs[12]1))≥FILTER(x1, cons(y[12]1, zs[12]1))∧(UIncreasing(FILTER(x[7], zs[7])), ≥))
(4) (Cond_isdiv2(&&(>@z(x3, x2), >@z(x2, 0@z)), x3, x2)=TRUE ⇒ IF(TRUE, x3, x2, cons(y[12]1, zs[12]1))≥FILTER(x3, cons(y[12]1, zs[12]1))∧(UIncreasing(FILTER(x[7], zs[7])), ≥))
(5) (Cond_isdiv1(>@z(x4, 0@z), x4)=TRUE ⇒ IF(TRUE, x4, 0@z, cons(y[12]1, zs[12]1))≥FILTER(x4, cons(y[12]1, zs[12]1))∧(UIncreasing(FILTER(x[7], zs[7])), ≥))
(6) (Cond_isdiv(&&(>=@z(x0, x1), >@z(x1, 0@z)), x1, x0)=TRUE ⇒ IF(TRUE, x1, x0, cons(y[12]1, zs[12]1))≥FILTER(x1, cons(y[12]1, zs[12]1))∧(UIncreasing(FILTER(x[7], zs[7])), ≥))
(7) (Cond_isdiv2(&&(>@z(x3, x2), >@z(x2, 0@z)), x3, x2)=TRUE ⇒ IF(TRUE, x3, x2, cons(y[12]1, zs[12]1))≥FILTER(x3, cons(y[12]1, zs[12]1))∧(UIncreasing(FILTER(x[7], zs[7])), ≥))
(8) (Cond_isdiv1(>@z(x4, 0@z), x4)=TRUE ⇒ IF(TRUE, x4, 0@z, cons(y[12]1, zs[12]1))≥FILTER(x4, cons(y[12]1, zs[12]1))∧(UIncreasing(FILTER(x[7], zs[7])), ≥))
(9) ((UIncreasing(FILTER(x[7], zs[7])), ≥)∧0 ≥ 0)
(10) ((UIncreasing(FILTER(x[7], zs[7])), ≥)∧0 ≥ 0)
(11) ((UIncreasing(FILTER(x[7], zs[7])), ≥)∧0 ≥ 0)
(12) ((UIncreasing(FILTER(x[7], zs[7])), ≥)∧0 ≥ 0)
(13) ((UIncreasing(FILTER(x[7], zs[7])), ≥)∧0 ≥ 0)
(14) ((UIncreasing(FILTER(x[7], zs[7])), ≥)∧0 ≥ 0)
(15) (0 ≥ 0∧(UIncreasing(FILTER(x[7], zs[7])), ≥))
(16) (0 ≥ 0∧(UIncreasing(FILTER(x[7], zs[7])), ≥))
(17) (0 ≥ 0∧(UIncreasing(FILTER(x[7], zs[7])), ≥))
(18) (0 = 0∧0 ≥ 0∧0 = 0∧(UIncreasing(FILTER(x[7], zs[7])), ≥)∧0 = 0)
(19) (0 ≥ 0∧0 = 0∧(UIncreasing(FILTER(x[7], zs[7])), ≥)∧0 = 0∧0 = 0∧0 = 0)
(20) (0 = 0∧0 = 0∧0 = 0∧0 ≥ 0∧(UIncreasing(FILTER(x[7], zs[7])), ≥)∧0 = 0)
(21) (x[12]=x[5]∧zs[12]=zs[5]∧zs[5]=cons(y[12]1, zs[12]1)∧y[12]=y[5]∧x[5]=x[12]1∧isdiv(x[12], y[12])=FALSE ⇒ IF(FALSE, x[5], y[5], zs[5])≥FILTER(x[5], zs[5])∧(UIncreasing(FILTER(x[5], zs[5])), ≥))
(22) (isdiv(x[12], y[12])=FALSE ⇒ IF(FALSE, x[12], y[12], cons(y[12]1, zs[12]1))≥FILTER(x[12], cons(y[12]1, zs[12]1))∧(UIncreasing(FILTER(x[5], zs[5])), ≥))
(23) (Cond_isdiv(&&(>=@z(x8, x9), >@z(x9, 0@z)), x9, x8)=FALSE ⇒ IF(FALSE, x9, x8, cons(y[12]1, zs[12]1))≥FILTER(x9, cons(y[12]1, zs[12]1))∧(UIncreasing(FILTER(x[5], zs[5])), ≥))
(24) (Cond_isdiv2(&&(>@z(x11, x10), >@z(x10, 0@z)), x11, x10)=FALSE ⇒ IF(FALSE, x11, x10, cons(y[12]1, zs[12]1))≥FILTER(x11, cons(y[12]1, zs[12]1))∧(UIncreasing(FILTER(x[5], zs[5])), ≥))
(25) (Cond_isdiv1(>@z(x12, 0@z), x12)=FALSE ⇒ IF(FALSE, x12, 0@z, cons(y[12]1, zs[12]1))≥FILTER(x12, cons(y[12]1, zs[12]1))∧(UIncreasing(FILTER(x[5], zs[5])), ≥))
(26) (Cond_isdiv(&&(>=@z(x8, x9), >@z(x9, 0@z)), x9, x8)=FALSE ⇒ IF(FALSE, x9, x8, cons(y[12]1, zs[12]1))≥FILTER(x9, cons(y[12]1, zs[12]1))∧(UIncreasing(FILTER(x[5], zs[5])), ≥))
(27) (Cond_isdiv2(&&(>@z(x11, x10), >@z(x10, 0@z)), x11, x10)=FALSE ⇒ IF(FALSE, x11, x10, cons(y[12]1, zs[12]1))≥FILTER(x11, cons(y[12]1, zs[12]1))∧(UIncreasing(FILTER(x[5], zs[5])), ≥))
(28) (Cond_isdiv1(>@z(x12, 0@z), x12)=FALSE ⇒ IF(FALSE, x12, 0@z, cons(y[12]1, zs[12]1))≥FILTER(x12, cons(y[12]1, zs[12]1))∧(UIncreasing(FILTER(x[5], zs[5])), ≥))
(29) ((UIncreasing(FILTER(x[5], zs[5])), ≥)∧0 ≥ 0)
(30) ((UIncreasing(FILTER(x[5], zs[5])), ≥)∧0 ≥ 0)
(31) ((UIncreasing(FILTER(x[5], zs[5])), ≥)∧0 ≥ 0)
(32) ((UIncreasing(FILTER(x[5], zs[5])), ≥)∧0 ≥ 0)
(33) ((UIncreasing(FILTER(x[5], zs[5])), ≥)∧0 ≥ 0)
(34) ((UIncreasing(FILTER(x[5], zs[5])), ≥)∧0 ≥ 0)
(35) (0 ≥ 0∧(UIncreasing(FILTER(x[5], zs[5])), ≥))
(36) (0 ≥ 0∧(UIncreasing(FILTER(x[5], zs[5])), ≥))
(37) (0 ≥ 0∧(UIncreasing(FILTER(x[5], zs[5])), ≥))
(38) (0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧(UIncreasing(FILTER(x[5], zs[5])), ≥))
(39) (0 ≥ 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧(UIncreasing(FILTER(x[5], zs[5])), ≥))
(40) (0 = 0∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧(UIncreasing(FILTER(x[5], zs[5])), ≥))
(41) (x[5]=x[12]∧zs[5]=cons(y[12], zs[12])∧zs[12]=zs[5]1∧y[12]=y[5]1∧x[12]=x[5]1∧isdiv(x[12], y[12])=FALSE ⇒ FILTER(x[12], cons(y[12], zs[12]))≥IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(42) (isdiv(x[12], y[12])=FALSE ⇒ FILTER(x[12], cons(y[12], zs[12]))≥IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(43) (Cond_isdiv(&&(>=@z(x16, x17), >@z(x17, 0@z)), x17, x16)=FALSE ⇒ FILTER(x17, cons(x16, zs[12]))≥IF(isdiv(x17, x16), x17, x16, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(44) (Cond_isdiv2(&&(>@z(x19, x18), >@z(x18, 0@z)), x19, x18)=FALSE ⇒ FILTER(x19, cons(x18, zs[12]))≥IF(isdiv(x19, x18), x19, x18, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(45) (Cond_isdiv1(>@z(x20, 0@z), x20)=FALSE ⇒ FILTER(x20, cons(0@z, zs[12]))≥IF(isdiv(x20, 0@z), x20, 0@z, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(46) (Cond_isdiv(&&(>=@z(x16, x17), >@z(x17, 0@z)), x17, x16)=FALSE ⇒ FILTER(x17, cons(x16, zs[12]))≥IF(isdiv(x17, x16), x17, x16, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(47) (Cond_isdiv2(&&(>@z(x19, x18), >@z(x18, 0@z)), x19, x18)=FALSE ⇒ FILTER(x19, cons(x18, zs[12]))≥IF(isdiv(x19, x18), x19, x18, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(48) (Cond_isdiv1(>@z(x20, 0@z), x20)=FALSE ⇒ FILTER(x20, cons(0@z, zs[12]))≥IF(isdiv(x20, 0@z), x20, 0@z, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(49) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(50) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(51) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(52) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(53) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(54) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(55) (0 ≥ 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(56) (0 ≥ 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(57) (0 ≥ 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(58) (0 = 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0∧0 = 0)
(59) (0 = 0∧0 ≥ 0∧0 = 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 = 0)
(60) (0 ≥ 0∧0 = 0∧0 = 0∧0 = 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(61) (isdiv(x[12], y[12])=TRUE∧x[5]=x[12]∧zs[12]=zs[7]∧zs[5]=cons(y[12], zs[12])∧x[12]=x[7]∧y[12]=y[7] ⇒ FILTER(x[12], cons(y[12], zs[12]))≥IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(62) (isdiv(x[12], y[12])=TRUE ⇒ FILTER(x[12], cons(y[12], zs[12]))≥IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(63) (Cond_isdiv(&&(>=@z(x24, x25), >@z(x25, 0@z)), x25, x24)=TRUE ⇒ FILTER(x25, cons(x24, zs[12]))≥IF(isdiv(x25, x24), x25, x24, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(64) (Cond_isdiv2(&&(>@z(x27, x26), >@z(x26, 0@z)), x27, x26)=TRUE ⇒ FILTER(x27, cons(x26, zs[12]))≥IF(isdiv(x27, x26), x27, x26, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(65) (Cond_isdiv1(>@z(x28, 0@z), x28)=TRUE ⇒ FILTER(x28, cons(0@z, zs[12]))≥IF(isdiv(x28, 0@z), x28, 0@z, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(66) (Cond_isdiv(&&(>=@z(x24, x25), >@z(x25, 0@z)), x25, x24)=TRUE ⇒ FILTER(x25, cons(x24, zs[12]))≥IF(isdiv(x25, x24), x25, x24, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(67) (Cond_isdiv2(&&(>@z(x27, x26), >@z(x26, 0@z)), x27, x26)=TRUE ⇒ FILTER(x27, cons(x26, zs[12]))≥IF(isdiv(x27, x26), x27, x26, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(68) (Cond_isdiv1(>@z(x28, 0@z), x28)=TRUE ⇒ FILTER(x28, cons(0@z, zs[12]))≥IF(isdiv(x28, 0@z), x28, 0@z, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(69) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(70) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(71) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(72) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(73) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(74) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(75) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(76) (0 ≥ 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(77) (0 ≥ 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(78) (0 = 0∧0 ≥ 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 = 0)
(79) (0 = 0∧0 = 0∧0 = 0∧0 ≥ 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(80) (0 = 0∧0 = 0∧0 ≥ 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 = 0)
(81) (isdiv(x[12], y[12])=TRUE∧zs[12]=zs[7]1∧zs[7]=cons(y[12], zs[12])∧x[7]=x[12]∧x[12]=x[7]1∧y[12]=y[7]1 ⇒ FILTER(x[12], cons(y[12], zs[12]))≥IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(82) (isdiv(x[12], y[12])=TRUE ⇒ FILTER(x[12], cons(y[12], zs[12]))≥IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(83) (Cond_isdiv(&&(>=@z(x32, x33), >@z(x33, 0@z)), x33, x32)=TRUE ⇒ FILTER(x33, cons(x32, zs[12]))≥IF(isdiv(x33, x32), x33, x32, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(84) (Cond_isdiv2(&&(>@z(x35, x34), >@z(x34, 0@z)), x35, x34)=TRUE ⇒ FILTER(x35, cons(x34, zs[12]))≥IF(isdiv(x35, x34), x35, x34, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(85) (Cond_isdiv1(>@z(x36, 0@z), x36)=TRUE ⇒ FILTER(x36, cons(0@z, zs[12]))≥IF(isdiv(x36, 0@z), x36, 0@z, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(86) (Cond_isdiv(&&(>=@z(x32, x33), >@z(x33, 0@z)), x33, x32)=TRUE ⇒ FILTER(x33, cons(x32, zs[12]))≥IF(isdiv(x33, x32), x33, x32, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(87) (Cond_isdiv2(&&(>@z(x35, x34), >@z(x34, 0@z)), x35, x34)=TRUE ⇒ FILTER(x35, cons(x34, zs[12]))≥IF(isdiv(x35, x34), x35, x34, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(88) (Cond_isdiv1(>@z(x36, 0@z), x36)=TRUE ⇒ FILTER(x36, cons(0@z, zs[12]))≥IF(isdiv(x36, 0@z), x36, 0@z, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(89) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(90) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(91) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(92) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(93) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(94) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(95) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(96) (0 ≥ 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(97) (0 ≥ 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(98) (0 = 0∧0 ≥ 0∧0 = 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(99) (0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(100) (0 ≥ 0∧0 = 0∧0 = 0∧0 = 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(101) (x[12]=x[5]∧zs[12]=zs[5]∧zs[7]=cons(y[12], zs[12])∧x[7]=x[12]∧y[12]=y[5]∧isdiv(x[12], y[12])=FALSE ⇒ FILTER(x[12], cons(y[12], zs[12]))≥IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(102) (isdiv(x[12], y[12])=FALSE ⇒ FILTER(x[12], cons(y[12], zs[12]))≥IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(103) (Cond_isdiv(&&(>=@z(x40, x41), >@z(x41, 0@z)), x41, x40)=FALSE ⇒ FILTER(x41, cons(x40, zs[12]))≥IF(isdiv(x41, x40), x41, x40, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(104) (Cond_isdiv2(&&(>@z(x43, x42), >@z(x42, 0@z)), x43, x42)=FALSE ⇒ FILTER(x43, cons(x42, zs[12]))≥IF(isdiv(x43, x42), x43, x42, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(105) (Cond_isdiv1(>@z(x44, 0@z), x44)=FALSE ⇒ FILTER(x44, cons(0@z, zs[12]))≥IF(isdiv(x44, 0@z), x44, 0@z, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(106) (Cond_isdiv(&&(>=@z(x40, x41), >@z(x41, 0@z)), x41, x40)=FALSE ⇒ FILTER(x41, cons(x40, zs[12]))≥IF(isdiv(x41, x40), x41, x40, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(107) (Cond_isdiv2(&&(>@z(x43, x42), >@z(x42, 0@z)), x43, x42)=FALSE ⇒ FILTER(x43, cons(x42, zs[12]))≥IF(isdiv(x43, x42), x43, x42, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(108) (Cond_isdiv1(>@z(x44, 0@z), x44)=FALSE ⇒ FILTER(x44, cons(0@z, zs[12]))≥IF(isdiv(x44, 0@z), x44, 0@z, zs[12])∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(109) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(110) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(111) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(112) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(113) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(114) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(115) ((UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(116) (0 ≥ 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(117) (0 ≥ 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(118) (0 ≥ 0∧0 = 0∧0 = 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
(119) (0 = 0∧0 = 0∧0 = 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥)∧0 ≥ 0)
(120) (0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧(UIncreasing(IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])), ≥))
POL(-@z(x1, x2)) = 0
POL(Cond_isdiv2(x1, x2, x3)) = (2)x1
POL(0@z) = 0
POL(TRUE) = 0
POL(&&(x1, x2)) = 0
POL(FALSE) = 0
POL(>@z(x1, x2)) = 0
POL(isdiv(x1, x2)) = 0
POL(cons(x1, x2)) = 1 + x2
POL(>=@z(x1, x2)) = 0
POL(Cond_isdiv(x1, x2, x3)) = (3)x1
POL(Cond_isdiv1(x1, x2)) = 0
POL(undefined) = 0
POL(IF(x1, x2, x3, x4)) = -1 + x4 + (2)x2 + (-1)x1
POL(FILTER(x1, x2)) = -1 + x2 + (2)x1
FILTER(x[12], cons(y[12], zs[12])) → IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])
IF(TRUE, x[7], y[7], zs[7]) → FILTER(x[7], zs[7])
IF(FALSE, x[5], y[5], zs[5]) → FILTER(x[5], zs[5])
FILTER(x[12], cons(y[12], zs[12])) → IF(isdiv(x[12], y[12]), x[12], y[12], zs[12])
IF(TRUE, x[7], y[7], zs[7]) → FILTER(x[7], zs[7])
IF(FALSE, x[5], y[5], zs[5]) → FILTER(x[5], zs[5])
&&(FALSE, FALSE)1 ↔ FALSE1
Cond_isdiv(TRUE, x, y)1 ↔ isdiv(x, -@z(y, x))1
Cond_isdiv1(TRUE, x)1 ↔ TRUE1
-@z1 ↔
isdiv(x, y)1 ↔ Cond_isdiv(&&(>=@z(y, x), >@z(x, 0@z)), x, y)1
isdiv(x, 0@z)1 ↔ Cond_isdiv1(>@z(x, 0@z), x)1
&&(TRUE, TRUE)1 ↔ TRUE1
&&(TRUE, FALSE)1 ↔ FALSE1
&&(FALSE, TRUE)1 ↔ FALSE1
Cond_isdiv2(TRUE, x, y)1 ↔ FALSE1
isdiv(x, y)1 ↔ Cond_isdiv2(&&(>@z(x, y), >@z(y, 0@z)), x, y)1
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ AND
↳ IDP
↳ IDependencyGraphProof
↳ IDP
↳ IDP
z
Cond_isdiv2(TRUE, x, y) → FALSE
Cond_isdiv(TRUE, x, y) → isdiv(x, -@z(y, x))
isdiv(x, y) → Cond_isdiv(&&(>=@z(y, x), >@z(x, 0@z)), x, y)
isdiv(x, y) → Cond_isdiv2(&&(>@z(x, y), >@z(y, 0@z)), x, y)
isdiv(x, 0@z) → Cond_isdiv1(>@z(x, 0@z), x)
Cond_isdiv1(TRUE, x) → TRUE
sieve(nil)
Cond_isdiv(TRUE, x0, x1)
Cond_isdiv1(TRUE, x0)
filter(x0, cons(x1, x2))
if(TRUE, x0, x1, x2)
Cond_nats1(TRUE, x0, x1)
nats(x0, x1)
isdiv(x0, x1)
if(FALSE, x0, x1, x2)
Cond_nats(TRUE, x0, x1)
filter(x0, nil)
sieve(cons(x0, x1))
Cond_isdiv2(TRUE, x0, x1)
primes(x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ AND
↳ IDP
↳ IDP
↳ IDependencyGraphProof
↳ IDP
z
Cond_isdiv2(TRUE, x, y) → FALSE
Cond_isdiv(TRUE, x, y) → isdiv(x, -@z(y, x))
isdiv(x, y) → Cond_isdiv(&&(>=@z(y, x), >@z(x, 0@z)), x, y)
isdiv(x, y) → Cond_isdiv2(&&(>@z(x, y), >@z(y, 0@z)), x, y)
isdiv(x, 0@z) → Cond_isdiv1(>@z(x, 0@z), x)
Cond_isdiv1(TRUE, x) → TRUE
sieve(nil)
Cond_isdiv(TRUE, x0, x1)
Cond_isdiv1(TRUE, x0)
filter(x0, cons(x1, x2))
if(TRUE, x0, x1, x2)
Cond_nats1(TRUE, x0, x1)
nats(x0, x1)
isdiv(x0, x1)
if(FALSE, x0, x1, x2)
Cond_nats(TRUE, x0, x1)
filter(x0, nil)
sieve(cons(x0, x1))
Cond_isdiv2(TRUE, x0, x1)
primes(x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDP
↳ UsableRulesProof
z
Cond_isdiv1(TRUE, x) → TRUE
filter(x, cons(y, zs)) → if(isdiv(x, y), x, y, zs)
if(TRUE, x, y, zs) → filter(x, zs)
Cond_nats1(TRUE, x, y) → nil
nats(x, y) → Cond_nats1(>@z(x, y), x, y)
isdiv(x, 0@z) → Cond_isdiv1(>@z(x, 0@z), x)
nats(x, y) → Cond_nats(>=@z(y, x), x, y)
isdiv(x, y) → Cond_isdiv2(&&(>@z(x, y), >@z(y, 0@z)), x, y)
if(FALSE, x, y, zs) → cons(y, filter(x, zs))
Cond_nats(TRUE, x, y) → cons(x, nats(+@z(x, 1@z), y))
Cond_isdiv(TRUE, x, y) → isdiv(x, -@z(y, x))
isdiv(x, y) → Cond_isdiv(&&(>=@z(y, x), >@z(x, 0@z)), x, y)
filter(x, nil) → nil
Cond_isdiv2(TRUE, x, y) → FALSE
(11) -> (11), if ((filter(x[11], ys[11]) →* cons(x[11]a, ys[11]a)))
sieve(nil)
Cond_isdiv(TRUE, x0, x1)
Cond_isdiv1(TRUE, x0)
filter(x0, cons(x1, x2))
if(TRUE, x0, x1, x2)
Cond_nats1(TRUE, x0, x1)
nats(x0, x1)
isdiv(x0, x1)
if(FALSE, x0, x1, x2)
Cond_nats(TRUE, x0, x1)
filter(x0, nil)
sieve(cons(x0, x1))
Cond_isdiv2(TRUE, x0, x1)
primes(x0)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
z
isdiv(x, 0@z) → Cond_isdiv1(>@z(x, 0@z), x)
filter(x, cons(y, zs)) → if(isdiv(x, y), x, y, zs)
if(TRUE, x, y, zs) → filter(x, zs)
Cond_isdiv1(TRUE, x) → TRUE
Cond_isdiv2(TRUE, x, y) → FALSE
filter(x, nil) → nil
Cond_isdiv(TRUE, x, y) → isdiv(x, -@z(y, x))
isdiv(x, y) → Cond_isdiv(&&(>=@z(y, x), >@z(x, 0@z)), x, y)
if(FALSE, x, y, zs) → cons(y, filter(x, zs))
isdiv(x, y) → Cond_isdiv2(&&(>@z(x, y), >@z(y, 0@z)), x, y)
(11) -> (11), if ((filter(x[11], ys[11]) →* cons(x[11]a, ys[11]a)))
sieve(nil)
Cond_isdiv(TRUE, x0, x1)
Cond_isdiv1(TRUE, x0)
filter(x0, cons(x1, x2))
if(TRUE, x0, x1, x2)
Cond_nats1(TRUE, x0, x1)
nats(x0, x1)
isdiv(x0, x1)
if(FALSE, x0, x1, x2)
Cond_nats(TRUE, x0, x1)
filter(x0, nil)
sieve(cons(x0, x1))
Cond_isdiv2(TRUE, x0, x1)
primes(x0)
(1) (filter(x[11], ys[11])=cons(x[11]1, ys[11]1)∧filter(x[11]1, ys[11]1)=cons(x[11]2, ys[11]2) ⇒ SIEVE(cons(x[11]1, ys[11]1))≥SIEVE(filter(x[11]1, ys[11]1))∧(UIncreasing(SIEVE(filter(x[11]1, ys[11]1))), ≥))
(2) (if(isdiv(x2, x1), x2, x1, x0)=cons(x[11]1, ys[11]1)∧filter(x[11]1, ys[11]1)=cons(x[11]2, ys[11]2) ⇒ SIEVE(cons(x[11]1, ys[11]1))≥SIEVE(filter(x[11]1, ys[11]1))∧(UIncreasing(SIEVE(filter(x[11]1, ys[11]1))), ≥))
(3) (isdiv(x2, x1)=x4∧if(x4, x2, x1, x0)=cons(x[11]1, ys[11]1)∧filter(x[11]1, ys[11]1)=cons(x[11]2, ys[11]2) ⇒ SIEVE(cons(x[11]1, ys[11]1))≥SIEVE(filter(x[11]1, ys[11]1))∧(UIncreasing(SIEVE(filter(x[11]1, ys[11]1))), ≥))
(4) (if(isdiv(x7, x6), x7, x6, x5)=cons(x[11]2, ys[11]2)∧isdiv(x2, x1)=x4∧if(x4, x2, x1, x0)=cons(x7, cons(x6, x5)) ⇒ SIEVE(cons(x7, cons(x6, x5)))≥SIEVE(filter(x7, cons(x6, x5)))∧(UIncreasing(SIEVE(filter(x[11]1, ys[11]1))), ≥))
(5) (isdiv(x7, x6)=x9∧if(x9, x7, x6, x5)=cons(x[11]2, ys[11]2)∧isdiv(x2, x1)=x4∧if(x4, x2, x1, x0)=cons(x7, cons(x6, x5)) ⇒ SIEVE(cons(x7, cons(x6, x5)))≥SIEVE(filter(x7, cons(x6, x5)))∧(UIncreasing(SIEVE(filter(x[11]1, ys[11]1))), ≥))
(6) ((UIncreasing(SIEVE(filter(x[11]1, ys[11]1))), ≥)∧0 ≥ 0)
(7) ((UIncreasing(SIEVE(filter(x[11]1, ys[11]1))), ≥)∧0 ≥ 0)
(8) ((UIncreasing(SIEVE(filter(x[11]1, ys[11]1))), ≥)∧0 ≥ 0)
(9) ((UIncreasing(SIEVE(filter(x[11]1, ys[11]1))), ≥)∧0 ≥ 0∧0 = 0∧0 = 0∧0 = 0)
POL(-@z(x1, x2)) = 0
POL(SIEVE(x1)) = -1 + x1
POL(if(x1, x2, x3, x4)) = 1 + x4 + (2)x1
POL(Cond_isdiv2(x1, x2, x3)) = 0
POL(0@z) = 0
POL(TRUE) = 0
POL(&&(x1, x2)) = 0
POL(FALSE) = 0
POL(isdiv(x1, x2)) = 0
POL(>@z(x1, x2)) = 0
POL(cons(x1, x2)) = 1 + x2
POL(>=@z(x1, x2)) = 0
POL(Cond_isdiv(x1, x2, x3)) = (3)x1
POL(filter(x1, x2)) = x2
POL(Cond_isdiv1(x1, x2)) = 0
POL(nil) = 0
POL(undefined) = 0
SIEVE(cons(x[11], ys[11])) → SIEVE(filter(x[11], ys[11]))
SIEVE(cons(x[11], ys[11])) → SIEVE(filter(x[11], ys[11]))
Cond_isdiv(TRUE, x, y)1 ↔ isdiv(x, -@z(y, x))1
Cond_isdiv1(TRUE, x)1 ↔ TRUE1
filter(x, cons(y, zs))1 ↔ if(isdiv(x, y), x, y, zs)1
if(TRUE, x, y, zs)1 → filter(x, zs)1
isdiv(x, 0@z)1 ↔ Cond_isdiv1(>@z(x, 0@z), x)1
&&(TRUE, FALSE)1 ↔ FALSE1
&&(FALSE, TRUE)1 ↔ FALSE1
isdiv(x, y)1 ↔ Cond_isdiv2(&&(>@z(x, y), >@z(y, 0@z)), x, y)1
&&(FALSE, FALSE)1 ↔ FALSE1
if(FALSE, x, y, zs)1 ↔ cons(y, filter(x, zs))1
-@z1 ↔
isdiv(x, y)1 ↔ Cond_isdiv(&&(>=@z(y, x), >@z(x, 0@z)), x, y)1
filter(x, nil)1 ↔ nil1
&&(TRUE, TRUE)1 ↔ TRUE1
Cond_isdiv2(TRUE, x, y)1 ↔ FALSE1
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ IDP
↳ IDependencyGraphProof
z
isdiv(x, 0@z) → Cond_isdiv1(>@z(x, 0@z), x)
filter(x, cons(y, zs)) → if(isdiv(x, y), x, y, zs)
if(TRUE, x, y, zs) → filter(x, zs)
Cond_isdiv1(TRUE, x) → TRUE
Cond_isdiv2(TRUE, x, y) → FALSE
filter(x, nil) → nil
Cond_isdiv(TRUE, x, y) → isdiv(x, -@z(y, x))
isdiv(x, y) → Cond_isdiv(&&(>=@z(y, x), >@z(x, 0@z)), x, y)
if(FALSE, x, y, zs) → cons(y, filter(x, zs))
isdiv(x, y) → Cond_isdiv2(&&(>@z(x, y), >@z(y, 0@z)), x, y)
sieve(nil)
Cond_isdiv(TRUE, x0, x1)
Cond_isdiv1(TRUE, x0)
filter(x0, cons(x1, x2))
if(TRUE, x0, x1, x2)
Cond_nats1(TRUE, x0, x1)
nats(x0, x1)
isdiv(x0, x1)
if(FALSE, x0, x1, x2)
Cond_nats(TRUE, x0, x1)
filter(x0, nil)
sieve(cons(x0, x1))
Cond_isdiv2(TRUE, x0, x1)
primes(x0)